package com.tanjun.userservice.apiservice.request.adminuser;

import com.tanjun.common.annotation.Edit;
import com.tanjun.common.constants.DefaultConstant;
import com.tanjun.common.enums.EnableStatusEnum;
import com.tanjun.common.enums.user.AdminUserTypeEnum;
import com.tanjun.common.enums.user.SexEnum;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import jakarta.validation.constraints.*;
import java.time.LocalDate;
import java.util.List;

/**
 * 新增或者修改用户实体
 */
@Data
public class AdminUserRequest {
    /**
     * 主键id
     */
    @NotNull(groups = Edit.class,message = "主键id不能为空")
    private Long userId;

    private AdminUserTypeEnum userType;

    /**
     * 部门id
     */
    private Long deptId;

    /**
     * 供应商id
     */
    private Long vendorId;


    /**
     * 用户名
     */
    @NotNull(message = "用户名不能为空")
    @Length(min = 1,max = 20,message = "用户名应该1-20位字符")
    private String userName;

    /**
     * 真实姓名
     */
    @NotNull(message = "真实姓名不能为空")
    @Length(min=2,max = 20,message = "真实姓名长度应该是2-20位字符")
    private String realName;

    /**
     * 邮箱
     */
    @Email(message = "邮箱格式有误")
    private String email;

    /**
     * 性别 （0:未知,1:男；2:女）
     */
    //@NotNull(message = "性别信息不能为空")
    private SexEnum userSex;

    /**
     * 手机号
     */
    @NotNull(message = "手机号不能为空")
    @Pattern(regexp = DefaultConstant.PHONE_PATTERN,message = "手机号格式有误")
    private String phone;

    /**
     * 生日
     */
    @Past(message = "生日输入有误")
    private LocalDate birthDate;

    /**
     * 用户图像
     */
    private String avatar;

    /**
     * 是否可用
     */
    @NotNull(message = "是否可用不能为空")
    private EnableStatusEnum enabled;

    @NotEmpty(message = "角色id不能为空")
    private List<Long> roleIdList;
}
